#ifndef			PARSERBNF_H_
#define			PARSERBNF_H_

#include <map>
#include <list>
#include <iostream>
#include <fstream>
#include "MyException.h"
#include "IBNF.h"

class StaticNextBNF : public IBNF
{
  typedef     std::string	(StaticNextBNF::*func)(std::string );
 private:
  std::map<std::string, func >	_pars;
  std::ifstream						_file;
  std::map<std::string, std::string> _var;

 private:
 StaticNextBNF(StaticNextBNF const &) : IBNF() {}
  StaticNextBNF&		operator = (StaticNextBNF const &) {return *this;}
  StaticNextBNF(){}

 public:
  virtual ~StaticNextBNF(){}
  StaticNextBNF(std::map<std::string, std::string> const &);
  std::string		visible(std::string line);
  std::string		hai(std::string line);
  std::string		kthxbye(std::string line);
  std::string		btw(std::string line);
  std::string		lol(std::string line);
  std::string		canhas(std::string line);
  std::string		ihasa(std::string line);
  std::string		translate(std::string line);
  virtual bool		priority(std::string line);
};

#endif			//!PARSERBNF_H_
